{
  /*
    学习目标：keyof的使用
    作用：提取目标的键名。
    得到：键名字面量 + 联合类型。表示是其中一个。
    注意：💥 keyof跟的是类型，不要与typeof搞混了
    ✅ type BB = keyof FormDataType
    ❌  type AA = keyof form
  
    
  */
  type FormDataType = {
    name: string;
    age: number;
    gender: string;
  };

  const form: FormDataType = {
    name: 'zs',
    age: 18,
    gender: '男',
  };

  // 😎 name为string时，有可能取出undefined
  // function getValueByName(name: string) {
  //   return form[name];
  // }
  // 😎 想限定取值范围怎么办？
  // function getValueByName(name: 'name' | 'age' | 'gender😎') {
  //   return form[name];
  // }

  // 键太多了怎么，不想写，想偷懒，肿么办？
  // keyof FormDataType  等同于 'name' | 'age' | 'gender'
  // keyof的作用
  function getValueByName(name: keyof FormDataType) {
    return form[name];
  }

  getValueByName('123');
}
